package com.ybbase.framework.service.flow;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ybbase.framework.model.po.flow.NodeConfig;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ybbase.framework.model.po.flow.NodeUsergroup;
import com.ybbase.framework.model.po.system.User;

import java.util.List;

/**
 * <p>
 * 节点配置表 服务类
 * </p>
 *
 * @author cg
 * @since 2019-12-04
 */
public interface NodeConfigService extends IService<NodeConfig> {
    /**
     * 根据流程编码获取流程节点用户配置
     * @param flowCode 流程编码
     * @param nodeCode 节点编码
     * @return
     * @author cg
     * @date 2019-11-07 15:36
     * @since 4.0
     */
    List<NodeUsergroup> getUserByFlowNode(String flowCode, String nodeCode);

    /**
     * 删除流程编码获取流程节点用户配置
     *
     * @param id 节点用户配置编码
     * @return
     * @author cg
     * @date 2019-11-12 18:50
     * @since 4.0
     */
    void removeUserGroup(Integer id) throws Exception;

    /**
     * 保存流程节点配置
     *
     * @param nodeConfig 流程节点配置
     * @return
     * @author cg
     * @date 2019-11-13 15:12
     * @since 4.0
     */
    void saveNodeConfig(NodeConfig nodeConfig) throws Exception;

    /**
     * 保存流程业务用户节点
     * @param nodeId 节点ID
     * @param userId 用户ID
     * @return
     * @author cg
     * @date 2019-11-06 20:07
     * @since 4.0
     */
    void saveConfigUserGroup(Integer nodeId,Integer organId,Integer userId) throws Exception;

    /**
     * 保存流程业务节点上的方法
     * @param nodeConfig 节点配置
     * @return
     * @author cg
     * @date 2019-11-06 21:10
     * @since 4.0
     */
    void saveConfigAction(NodeConfig nodeConfig) throws Exception;

    /**
     * 保存流程业务节点上的方法
     * @param nodeConfig 节点配置
     * @return
     * @author cg
     * @date 2019-11-06 21:10
     * @since 4.0
     */
    void editConfigAction(NodeConfig nodeConfig) throws Exception;

    /**
     * 编辑流程节点配置
     * @param nodeConfig 流程节点配置
     * @return
     * @author cg
     * @date 2019-11-13 17:58
     * @since 4.0
     */
    void editNodeConfig(NodeConfig nodeConfig) throws Exception;

    /**
     * 根据节点编码查询用户节点数据
     * @param
     * @return
     * @author cg
     * @date 2020-01-11 22:26
     * @since cloud2.0
    */
    List<User> getUserByNodeConfig(String userIds);
    /**
     * 根据节点编码删除用户节点数据
     * @param
     * @return
     * @author cg
     * @date 2020-01-11 22:26
     * @since cloud2.0
     */
    void removeByNodeId(Integer parseInt);

    /**
     * 查询用户节点配置信息
     * @param
     * @return 
     * @author cg
     * @date 2020-03-01 23:42
     * @since cloud2.0
    */
    List<NodeUsergroup> getNodeGroup(QueryWrapper<NodeUsergroup> nw);


}
